home *** CD-ROM | disk | FTP | other *** search
/ Ultra Pack / UltraComputing Partner Applications.iso / SunLabs / tclTK / src / tk4.0 / tkPort.h < prev    next >
C/C++ Source or Header  |  1995-05-11  |  5KB  |  193 lines

  1. /*
  2.  * tkPort.h --
  3.  *
  4.  *    This file is included by all of the Tk C files.  It contains
  5.  *    information that may be configuration-dependent, such as
  6.  *    #includes for system include files and a few other things.
  7.  *
  8.  * Copyright (c) 1991-1993 The Regents of the University of California.
  9.  * Copyright (c) 1994 Sun Microsystems, Inc.
  10.  *
  11.  * See the file "license.terms" for information on usage and redistribution
  12.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  13.  *
  14.  * @(#) tkPort.h 1.5 95/05/11 10:49:35
  15.  */
  16.  
  17. #ifndef _TKPORT
  18. #define _TKPORT
  19.  
  20. /*
  21.  * Macro to use instead of "void" for arguments that must have
  22.  * type "void *" in ANSI C;  maps them to type "char *" in
  23.  * non-ANSI systems.  This macro may be used in some of the include
  24.  * files below, which is why it is defined here.
  25.  */
  26.  
  27. #ifndef VOID
  28. #   ifdef __STDC__
  29. #       define VOID void
  30. #   else
  31. #       define VOID char
  32. #   endif
  33. #endif
  34.  
  35. #include <stdio.h>
  36. #include <ctype.h>
  37. #include <fcntl.h>
  38. #ifdef HAVE_LIMITS_H
  39. #   include <limits.h>
  40. #else
  41. #   include "compat/limits.h"
  42. #endif
  43. #include <math.h>
  44. #include <pwd.h>
  45. #ifdef NO_STDLIB_H
  46. #   include "compat/stdlib.h"
  47. #else
  48. #   include <stdlib.h>
  49. #endif
  50. #include <string.h>
  51. #include <sys/types.h>
  52. #include <sys/file.h>
  53. #ifdef HAVE_SYS_SELECT_H
  54. #   include <sys/select.h>
  55. #endif
  56. #include <sys/stat.h>
  57. #include <sys/time.h>
  58. #ifndef _TCL
  59. #   include <tcl.h>
  60. #endif
  61. #ifdef HAVE_UNISTD_H
  62. #   include <unistd.h>
  63. #else
  64. #   include "compat/unistd.h"
  65. #endif
  66. #include <X11/Xlib.h>
  67. #include <X11/cursorfont.h>
  68. #include <X11/keysym.h>
  69. #include <X11/Xatom.h>
  70. #include <X11/Xproto.h>
  71. #include <X11/Xresource.h>
  72. #include <X11/Xutil.h>
  73.  
  74. /*
  75.  * Not all systems declare the errno variable in errno.h. so this
  76.  * file does it explicitly.
  77.  */
  78.  
  79. extern int errno;
  80.  
  81. /*
  82.  * Define OPEN_MAX if it isn't already defined for this system.
  83.  */
  84.  
  85. #ifndef OPEN_MAX
  86. #   define OPEN_MAX 256
  87. #endif
  88.  
  89. /*
  90.  * The following macro defines the type of the mask arguments to
  91.  * select:
  92.  */
  93.  
  94. #ifndef NO_FD_SET
  95. #   define SELECT_MASK fd_set
  96. #else
  97. #   ifndef _AIX
  98.     typedef long fd_mask;
  99. #   endif
  100. #   if defined(_IBMR2)
  101. #    define SELECT_MASK void
  102. #   else
  103. #    define SELECT_MASK int
  104. #   endif
  105. #endif
  106.  
  107. /*
  108.  * Define "NBBY" (number of bits per byte) if it's not already defined.
  109.  */
  110.  
  111. #ifndef NBBY
  112. #   define NBBY 8
  113. #endif
  114.  
  115. /*
  116.  * The following macro defines the number of fd_masks in an fd_set:
  117.  */
  118.  
  119. #if !defined(howmany)
  120. #   define howmany(x, y) (((x)+((y)-1))/(y))
  121. #endif
  122. #ifdef NFDBITS
  123. #   define MASK_SIZE howmany(FD_SETSIZE, NFDBITS)
  124. #else
  125. #   define MASK_SIZE howmany(OPEN_MAX, NBBY*sizeof(fd_mask))
  126. #endif
  127.  
  128. /*
  129.  * The following macro checks to see whether there is buffered
  130.  * input data available for a stdio FILE.  This has to be done
  131.  * in different ways on different systems.  TK_FILE_GPTR and
  132.  * TK_FILE_COUNT are #defined by autoconf.
  133.  */
  134.  
  135. #ifdef TK_FILE_COUNT
  136. #   define TK_READ_DATA_PENDING(f) ((f)->TK_FILE_COUNT > 0)
  137. #else
  138. #   ifdef TK_FILE_GPTR
  139. #       define TK_READ_DATA_PENDING(f) ((f)->_gptr < (f)->_egptr)
  140. #   else
  141. #       ifdef TK_FILE_READ_PTR
  142. #        define TK_READ_DATA_PENDING(f) ((f)->_IO_read_ptr != (f)->_IO_read_end)
  143. #    else
  144.         /*
  145.          * Don't know what to do for this system; whoever installs
  146.          * Tk will have to write a function TkReadDataPending to do
  147.          * the job.
  148.          */
  149.         EXTERN int TkReadDataPending _ANSI_ARGS_((FILE *f));
  150. #           define TK_READ_DATA_PENDING(f) TkReadDataPending(f)
  151. #    endif
  152. #   endif
  153. #endif
  154.  
  155. /*
  156.  * Substitute Tcl's own versions for several system calls.  The
  157.  * Tcl versions retry automatically if interrupted by signals.
  158.  */
  159.  
  160. #define open(a,b,c) TclOpen(a,b,c)
  161. #define read(a,b,c) TclRead(a,b,c)
  162. #define waitpid(a,b,c) TclWaitpid(a,b,c)
  163. #define write(a,b,c) TclWrite(a,b,c)
  164. EXTERN int    TclOpen _ANSI_ARGS_((char *path, int oflag, mode_t mode));
  165. EXTERN int    TclRead _ANSI_ARGS_((int fd, VOID *buf,
  166.             unsigned int numBytes));
  167. EXTERN int    TclWaitpid _ANSI_ARGS_((pid_t pid, int *statPtr, int options));
  168. EXTERN int    TclWrite _ANSI_ARGS_((int fd, VOID *buf,
  169.             unsigned int numBytes));
  170.  
  171. /*
  172.  * If this system has a BSDgettimeofday function (e.g. IRIX) use it
  173.  * instead of gettimeofday; the gettimeofday function has a different
  174.  * interface than the BSD one that this code expects.
  175.  */
  176.  
  177. #ifdef HAVE_BSDGETTIMEOFDAY
  178. #   define gettimeofday BSDgettimeofday
  179. #endif
  180. #ifdef GETTOD_NOT_DECLARED
  181. EXTERN int        gettimeofday _ANSI_ARGS_((struct timeval *tp,
  182.                 struct timezone *tzp));
  183. #endif
  184.  
  185. /*
  186.  * Declarations for various library procedures that may not be declared
  187.  * in any other header file.
  188.  */
  189.  
  190. extern void        panic();
  191.  
  192. #endif /* _TKPORT */
  193.